package back;

import java.awt.Color;

/**
 * Clase Destino que implementa la interfaz NoMovible y Elemento
 * define el comportamiento de un destino
 */

public class Destino implements NoMovible{
	
	private Color color;
	
	/**
	 * Constructor de la clase
	 * recibe como parametro el color del destino
	 * @param Color color del destino. 
	 */
	
	public Destino(Color color){
		this.color=color;
	}

	
	/**
	 * Retorna true porque a un destino siempre
	 * se puede acceder desde cualquier direccion
	 * @param int direccion desde donde se quiere realizar el movimiento
	 * @param Celda destino
	 * @return boolean true. 
	 */
	public boolean posibleMov(int direccion, Celda destino) {
		return true;
	}


	/**
	 * Retorna el color del destino
	 * @return Color color del destino. 
	 */
	public Color getColor() {
		return color;
		
	}


	/**
	 * Pone a mov en la celda pasada como parametro
	 * y en caso de que mov sea una caja del mismo color
	 * del destino la hace brillar
	 * @param Celda celda
	 * @param Movible mov
	 */
	
	public void pongoMov(Celda celda, Movible mov) {
		if(celda.getMovible().getClass()==Caja.class){
			if(((Caja)(celda.getMovible())).getColor().equals(this.color)){
				celda.setNoBrilla();
			}
		}
		if(mov.getClass()==Caja.class){
			if(((Caja)mov).getColor().equals(this.color)){
				celda.setBrilla();
			}
		}
		celda.setMovible(mov);
		
	}


	/**
	 * Agrega un destino en la celda pasada como parametro
	 * Llama a interaccion
	 * @param Celda celda
	 */
	
	public void agrego(Celda celda) {
		celda.setNoMovible(this);
		celda.getTablero().agregaDestinos();
		interaccion(celda);
		
	}
	
	/**
	 * Si en la celda hay una caja del mismo color
	 * del destino llama a setBrilla
	 * @param Celda celda
	 */
	
	public void interaccion(Celda celda){
		if(celda.getMovible().getClass()==Caja.class)
			if(((Caja)(celda.getMovible())).getColor().equals(this.color))
				celda.setBrilla();
	}


}
